perm filename WIXSUB.FAI[VIS,HPM] blob
sn#160941 filedate 1975-05-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE WIXSUB
C00005 00003 SHFT1: 0
C00010 00004 CLN: 0
C00014 00005 HIPASS: 0 HI PASS FILTERING
C00017 00006 ***** SAIL INTERFACE ********
C00018 00007 ACS: BLOCK 20
C00024 00008 CLEAN: MOVEM 12,ACS12
C00025 ENDMK
C⊗;
TITLE WIXSUB
ENTRY INTRST,CLEAN,PASSHI
EXTERN SQRS
EXTERN MAKTAB,CORGET,CORREL
WIND: 0
HORWIN: 0
VERWIN: 0
NWIN: 0
WINSIZ: 0
STRIP: 0
MAPTAB: 0
STRIP2: 0
A←ARRY2←ARRYO←BESTY←3 ↔ ARRY1←ARRY←CNT2←BESTX←4 ↔ DX1←VW←0
B←T←16 ↔ C←TX←STRP←2 ↔ D←PT←PNT←5 ↔ TY←CNT←6
SUMSQ←E←TXX←HC←7 ↔ PND←DX2←VC←10 ↔ PNC←X1←D1C←11
PNE←Y1←D2C←12 ↔ PN1←X2←CNT1←13
CC←Y2←TOP←14 ↔ DY1←POS←15 ↔ SUM←1 ↔ DL←17
PCLN←←0
PCWD←←1
PCBY←←2
PCBYA←←3
LNWD←←4
LNBY←←5
LNBYA←←6
WDBY←←7
WDBI←←10
BYBI←←11
BPTAB←←12
LINTAB←←13
PICWID: 0 ↔ BICWID: 0
PICLIN: 0 ↔ BICLIN: 0
PICHIG: 0 ↔ BICHIG: 0
PICBIT: 0 ↔ BICBIT: 0
PICWIZ: 0 ↔ BICWIZ: 0
PICSIZ: 0 ↔ BICSIZ: 0
COLTAB: 0 ↔ BOLTAB: 0
ROWTAB: 0 ↔ BOWTAB: 0
SETUP: 0
MOVE T,PCWD(ARRY) ;SET "GLOBALS" FOR COMPATABILITY WITH
MOVEM T,PICSIZ ;OLD FORMAT
MOVE T,LNBYA(ARRY)
MOVEM T,PICWIZ
MOVE T,BYBI(ARRY)
MOVEM T,PICBIT
MOVE T,PCLN(ARRY)
MOVEM T,PICHIG
MOVE T,LNWD(ARRY)
MOVEM T,PICLIN
MOVE T,LNBY(ARRY)
MOVEM T,PICWID
MOVE T,BPTAB(ARRY)
MOVEM T,COLTAB
MOVEI T,LINTAB(ARRY)
MOVEM T,ROWTAB
MOVE ARRY,(T)
JRST @SETUP
SETUP2: 0
MOVE T,PCWD(ARRY2) ;SET SIMILAR VARIABLES FOR SECOND ARRAY
MOVEM T,BICSIZ
MOVE T,LNBYA(ARRY2)
MOVEM T,BICWIZ
MOVE T,BYBI(ARRY2)
MOVEM T,BICBIT
MOVE T,PCLN(ARRY2)
MOVEM T,BICHIG
MOVE T,LNWD(ARRY2)
MOVEM T,BICLIN
MOVE T,LNBY(ARRY2)
MOVEM T,BICWID
MOVE T,BPTAB(ARRY2)
MOVEM T,BOLTAB
MOVEI T,LINTAB(ARRY2)
MOVEM T,BOWTAB
MOVE ARRY2,(T)
JRST @SETUP2
SHFT1: 0
PERUSE: 0
MOVN T,HORWIN
HRRM T,CV
HRRM T,CV+2
HRRM T,CW
HRRM T,CW+1
ADDI T,1
HRRM T,DV
HRRM T,DV+2
HRRM T,DW
HRRM T,DW+1
ADDI T,1
HRRM T,EV
HRRM T,EV+2
HRRM T,EW
HRRM T,EW+1
MOVN STRP,PICWIZ
IMUL STRP,WIND
SUB STRP,PICWIZ
HRLZ STRP,STRP
HRLZ PNT,PICBIT
LSH PNT,6
ADDI PNT,-1(ARRY)
THIS←←2
SIZ←←3
MOVEM THIS,STRIP ;TEPORARILY SAVE STRP AND ARRYO,
MOVEM SIZ,STRIP2 ;BECAUSE THESE ARE THE "THIS" AND
MOVE SIZ,WIND ;"SIZ" ACS FOR CORGET
ADDI SIZ,1
IMUL SIZ,PICWIZ
PUSHJ 17,CORGET
HALT
HRRM THIS,PQ1
HRRM THIS,ILP
HRRM THIS,PQ2
HRRM THIS,PQ3
ADDI THIS,1
HRRM THIS,PR1
HRRM THIS,PR2
ADD THIS,PICWIZ
HRRM THIS,PP1
SUBI THIS,1
HRRM THIS,PP
HRRM THIS,PP0
MOVE THIS,STRIP
MOVE SIZ,STRIP2
MOVEI T,5 ;CALCULATE SHIFT NEEDED TO MAKE SAMPLE SIZE
SUB T,PICBIT ;FIVE BITS
HRRZM T,SHFT1
SUBI ARRYO,1
MOVE VW,VERWIN
SETZ SUM,
VERLP: MOVE CNT,STRP
UNPAK: ILDB T,PNT
LSH T,@SHFT1
PQ1: MOVEM T,STRIP(CNT)
AOBJN CNT,UNPAK
MOVE CNT,HORWIN
SETZB POS,TOP
KLP: SETZB HC,VC
SETZB D1C,D2C
MOVE CNT2,WIND
JLP: MOVE CNT1,WIND
ILP: MOVE T,STRIP(POS)
PR1: SUB T,STRIP+1(POS)
ADD HC,SQRS(T)
PQ2: MOVE T,STRIP(POS)
PP: SUB T,STRIP+1(POS) ;REPLACED BY STRIP+<PICWID>(POS)
ADD VC,SQRS(T)
PQ3: MOVE T,STRIP(POS)
PP1: SUB T,STRIP+1(POS) ;REPLACED BY STRIP +<PICWID>+1
ADD D1C,SQRS(T)
PR2: MOVE T,STRIP+1(POS)
PP0: SUB T,STRIP+1(POS) ;REPLACED BY STRIP+<PICWID>
ADD D2C,SQRS(T)
ADD POS,PICWIZ
SOJG CNT1,ILP
AOS POS,TOP
SOJG CNT2,JLP
TLZ HC,777774 ;remove sum portions, keep squares
TLZ VC,777774 ;remove sum portions, keep squares
TLZ D1C,777774 ;remove sum portions, keep squares
TLZ D2C,777774 ;remove sum portions, keep squares
CAMLE HC,VC
MOVE HC,VC
CAMLE HC,D1C
MOVE HC,D1C
CAMLE HC,D2C
MOVE HC,D2C
ADD SUM,HC
TRZ HC,1 ;THE LOCAL MAXIMUM TEST
MOVEI T,1
CAMGE HC,(ARRYO)
AOJA HC,CW
ORM T,(ARRYO)
CV: CAMGE HC,HORWIN(ARRYO) ;R HALF BECOMES -<HORWIN>
AOJA HC,DW
ORM T,HORWIN(ARRYO) ;BECOMES -<HORWIN>(ARRYO)
DV: CAMGE HC,1+HORWIN(ARRYO) ;BECOMES 1-<HORWIN>
AOJA HC,EW
ORM T,1+HORWIN(ARRYO) ;1-<HORWIN>
EV: CAMGE HC,2+HORWIN(ARRYO) ;2-<HORWIN>
AOJA HC,LOOF
ORM T,2+HORWIN(ARRYO) ;2-<HORWIN>
JRST LOOF
CW: CAMLE HC,HORWIN(ARRYO) ;-<HORWIN>
ORM T,HORWIN(ARRYO) ;-<HORWIN>
DW: CAMLE HC,1+HORWIN(ARRYO) ;1-<HORWIN>
ORM T,1+HORWIN(ARRYO) ;1-<HORWIN>
EW: CAMLE HC,2+HORWIN(ARRYO) ;2-<HORWIN>
ORM T,2+HORWIN(ARRYO) ;2-<HORWIN>
LOOF: PUSH ARRYO,HC
SOJG CNT,KLP
SUB PNT,PICLIN
SOJG VW,VERLP
HRRZ THIS,PQ1
PUSHJ 17,CORREL
JRST @PERUSE
CLN: 0
MOVE CNT,PICWIZ
SUBI CNT,2
MOVE A,PICHIG
SUBI A,2
IMUL CNT,A
HRLZ PND,PICBIT
LSH PND,6
ADDI PND,-1(ARRY)
MOVE PNC,PND
ADD PNC,PICLIN
ILDB B,PNC
MOVE PNE,PNC
ADD PNE,PICLIN
ILDB A,PNC
MOVE PN1,PNC
ILDB CC,PNC
IBP PND
ILDB D,PND
ILDB E,PNE
WOOP: MOVE C,CC
CAMLE B,C
EXCH B,C
CAMLE D,E
EXCH D,E
CAMLE B,D
EXCH B,D
CAMLE C,E
EXCH C,E
CAMLE C,D
EXCH C,D
CAMLE A,D
DPB D,PN1
CAMGE A,C
DPB C,PN1
MOVE PN1,PNC
MOVE B,A
MOVE A,CC
ILDB CC,PNC
ILDB D,PND
ILDB E,PNE
SOJG CNT,WOOP
JRST @CLN
HIPASS: 0 ;HI PASS FILTERING
MOVE T,BOLTAB ;SET UP RIGHT INDEX TABLE REFERENCES
SUBI T,1
HRRM T,BOLF
MOVE T,BOWTAB
SUBI T,1
HRRM T,BOWF
MOVE T,MAPTAB
HRRM T,SMT1
HRRM T,SMT2
MOVE T,STRIP2
HRRM T,S2R1
HRRM T,S2R2
HRRM T,S2R3
HRRM T,S2R4
HRRM T,S2R5
SUBI T,1
HRRM T,CO
MOVEI E,1
ASH E,@PICBIT
MOVE C,E
ASH C,1
SUBI E,1
MOVE CNT,E
HRRM CNT,TABTS
HRRM CNT,TABTS+1
ASH CNT,-1
HRRM CNT,TABL
MOVN E,E
TABL: HRREI VW,100(E)
CAIGE VW,0
MOVEI VW,0
TABTS: CAILE VW,77
MOVEI VW,77
SMT1: MOVEM VW,MAPTAB(E)
ADDI E,1
SOJG C,TABL
BRK: HRL E,ARRY1
HRR E,ARRY2
MOVE C,ARRY2
ADD C,PICSIZ
SUBI C,1
BLT E,(C)
MOVN CNT,PICWIZ
HRLZ CNT,CNT
HRLZ PNT,PICBIT
LSH PNT,6
ADDI PNT,-1(ARRY)
MOVE PN1,PNT
MOVE B,CNT
CL: ILDB VW,PNT
S2R1: MOVEM VW,STRIP2(B)
AOBJN B,CL
MOVE E,WIND
SOJLE E,NADD
CN: MOVE B,CNT
CM: ILDB VW,PNT
S2R2: ADDM VW,STRIP2(B)
AOBJN B,CM
SOJG E,CN
NADD: MOVE DL,WIND
ASH DL,-1
BOLF: MOVE ARRY2,BOLTAB-1(DL) ;REPLACED BY REAL BOLTAB ADDRESS
BOWF: ADD ARRY2,BOWTAB-1(DL) ;DITTO FOR BOWTAB
MOVE C,WIND
SUB C,PICWIZ
HRLZ C,C
S2R3: MOVEI VW,STRIP2
ADD VW,WIND
HRRM VW,SUMST
MOVE E,PICHIG
SUB E,WIND
CR: SETZ SUM,
MOVE B,WIND
CO: ADD SUM,STRIP2-1(B)
SOJG B,CO
MOVE B,C
MOVE PND,PICLIN
ADDB PND,ARRY2
CP: MOVE CC,WINSIZ
IDIVM SUM,CC
ILDB DY1,PND
SHFST: SUB DY1,CC
SMT2: MOVE DY1,MAPTAB(DY1)
DPB DY1,PND
S2R4: SUB SUM,STRIP2(B)
SUMST: ADD SUM,STRIP2(B) ;CHANGED TO STRIP+<WIND>
AOBJN B,CP
MOVE B,CNT
CQ: ILDB CC,PN1
ILDB VW,PNT
SUB VW,CC
S2R5: ADDM VW,STRIP2(B)
AOBJN B,CQ
SOJGE E,CR
JRST @HIPASS
;***** SAIL INTERFACE ********
P←17
ACS12: 0
ACS16: 0
ACS17: 0
RETAD: 0
INTRST: MOVEM 12,ACS12
MOVEM 16,ACS16
POP P,RETAD
POP P,ARRYO
POP P,WIND
POP P,ARRY
JSR SETUP
MOVEM 17,ACS17
MOVE 1,PICWID
SUBI 1,1
IDIV 1,WIND
MOVEM 1,HORWIN
MOVE 1,PICHIG
SUBI 1,1
IDIV 1,WIND
MOVEM 1,VERWIN
IMUL 1,HORWIN
MOVEM 1,NWIN
MOVE 1,WIND
IMUL 1,1
MOVEM 1,WINSIZ
JSR PERUSE
MOVE 12,ACS12
MOVE 16,ACS16
MOVE 17,ACS17
IDIV SUM,NWIN
JRST @RETAD
ACS: BLOCK 20
ARN1: 0
ARN2: 0
PASSHI: MOVEM 12,ACS12
MOVEM 16,ACS16
POP P,RETAD
POP P,ARRY2
POP P,WIND
POP P,ARRY1
HRL T,ARRY1
HRR T,ARRY2
BLT T,12(ARRY2)
MOVE T,ARRY2
SUB T,ARRY1
ADDM T,12(ARRY2)
MOVEM ARRY1,ARN1
MOVEM ARRY2,ARN2
PUSH P,ARRY2
PUSHJ P,MAKTAB
MOVE ARRY1,ARN1
MOVE ARRY2,ARN2
JSR SETUP
JSR SETUP2
MOVE 1,PICWID ;SET UP WINDOW PARAMETERS
SUBI 1,1
IDIV 1,WIND
MOVEM 1,HORWIN
MOVE 1,PICHIG
SUBI 1,1
IDIV 1,WIND
MOVEM 1,VERWIN
IMUL 1,HORWIN
MOVEM 1,NWIN
MOVE 1,WIND
IMUL 1,1
MOVEM 1,WINSIZ
MOVEM 16,ACS+16 ;SET UP UNPACKING AND MAP TABLE AREAS
MOVEI 16,ACS
BLT 16,ACS+15
MOVEI SIZ,1
ASH SIZ,@PICBIT
MOVEM SIZ,MAPTAB
ASH SIZ,1
PUSHJ 17,CORGET
HALT
MOVEM THIS,STRIP
ADDM THIS,MAPTAB
MOVE SIZ,PICWIZ
PUSHJ 17,CORGET
HALT
MOVEM THIS,STRIP2
HRLZI 16,ACS
BLT 16,16
MOVEM 17,ACS17
JSR HIPASS
MOVE 17,ACS17
MOVE 16,ACS16
MOVE 12,ACS12
MOVE THIS,STRIP
PUSHJ 17,CORREL
MOVE THIS,STRIP2
PUSHJ 17,CORREL
JRST @RETAD
CLEAN: MOVEM 12,ACS12
MOVEM 16,ACS16
POP P,RETAD
POP P,ARRY
JSR SETUP
MOVEM 17,ACS17
JSR CLN
MOVE 12,ACS12
MOVE 16,ACS16
MOVE 17,ACS17
JRST @RETAD
END